﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Kamikaze
{
    class RolagemCena
    {
        private Texture2D tela1, tela2,fundo, fundo2;
        private Rectangle objetoImagem, objetoImagem2, objetoImagem3, objetoImagem4;
        private float velocidade;
        private float aceleracao;
        private float velocidadeMax = 20;
       
        
        
        // private Game1 game;
   
        private int contador;
        private int contadorAntigo;


        public RolagemCena(Texture2D tela1, Texture2D tela2, Texture2D fundo, Texture2D fundo2, int x, int y)
        {
            this.tela1 = tela1;
            this.tela2 = tela2;
            this.fundo = fundo;
            this.fundo2 = fundo2;

           
            this.objetoImagem = new Rectangle(x,y,tela1.Width, tela1.Height);
            this.objetoImagem2 = new Rectangle(x + tela1.Width, y, tela2.Width, tela2.Height);
            this.objetoImagem3 = new Rectangle(x, y, fundo.Width, fundo.Height);
            this.objetoImagem4 = new Rectangle(x + fundo.Width, y, fundo2.Width, fundo2.Height);

            

            Inicialize();

        }


        public void Inicialize()
        {
            aceleracao = 1.05f; 
            velocidade = 5f;
            contador = 1;
            contadorAntigo = 0;
        }

        public void Update(GameTime gametime)
        {



            objetoImagem.X -= (int)velocidade;
            objetoImagem2.X -= (int)velocidade;
            objetoImagem3.X -= (int)1.5;
            objetoImagem4.X -= (int)1.5;

              if (objetoImagem.X < -objetoImagem.Width)
            {
                objetoImagem.X = objetoImagem2.X + objetoImagem2.Width ;
                contadorAntigo = contador;
                
            }

              if (objetoImagem2.X < -objetoImagem2.Width)
            {
                objetoImagem2.X = objetoImagem.X + objetoImagem.Width ;
                
                
                  
            }

           

              if (objetoImagem3.X < -objetoImagem3.Width)
              {
                  objetoImagem3.X = objetoImagem4.X + objetoImagem4.Width;

              }

              if (objetoImagem4.X < -objetoImagem4.Width)
              {
                  objetoImagem4.X = objetoImagem3.X + objetoImagem3.Width;
                  

                  
              }


              if (velocidade < velocidadeMax)
              {
                  if (contadorAntigo == contador)
                  {

                      velocidade += aceleracao;

                      contador++;

                      Console.WriteLine(contadorAntigo + "  -  " + contador + "  - " + velocidade);
                  }
              }


              

        }

        public void Draw(SpriteBatch spriteBatch)
        {
           // spriteBatch.Draw(tela1, posicaoRolagem, new Rectangle(0, 0, tela1.Width, tela1.Height), Color.White);
           // spriteBatch.Draw(tela2, posicaoRolagem, new Rectangle(0, 0, tela1.Width, tela1.Height), Color.White);
            spriteBatch.Draw(fundo, objetoImagem3, Color.White);
            spriteBatch.Draw(fundo2, objetoImagem4, Color.White);
            spriteBatch.Draw(tela1, objetoImagem, Color.White);
            spriteBatch.Draw(tela2, objetoImagem2, Color.White);
            

          // spriteBatch.Draw(tela2, posicaoRolagem, new Rectangle(0, 0, tela1.Width, tela1.Height), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
        }


    }
}




























//        public RolagemCena(Texture2D tela1, Texture2D tela2, Vector2 posicaoRolagem, Game1 game)
//        {
//            this.tela1 = tela1;
//            this.tela2 = tela2;
//            this.posicaoRolagem = posicaoRolagem;
//           // this.posicaosave = posicaosave;
//            this.game = game;
//           this.posicaoRolagem = new Vector2(0,0);
//            initialize();
//        }


//        public void initialize()
//        {
//            velocidade = 0.2f;
//           // indice = 0;
//            contador = 0;
//            //fases = new string[4] { "cenario", "cenario2", "cenario", "cenario2" };
            
//        }


//        public void Update(GameTime gametime)
//        {
            
            
//            if (posicaoRolagem.X < 0)
//            {
//                tela1 = tela2;
//                tela2 = game.Content.Load<Texture2D>(fases[indice++]);
//                contador += 1;
                

//                if (indice > fases.Length - 1)
//                {
//                    indice = 0;
//                }

//                if (contador >= 4)
//                {
//                    velocidade = 0;  
//                }



//                posicaoRolagem.X = tela1.Width;

//            }

//            posicaoRolagem.X -= (float)gametime.ElapsedGameTime.Milliseconds * velocidade;

            

//        }

//        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
//        {
//            spriteBatch.Draw(tela1, posicaoRolagem, new Rectangle(0, 0, tela1.Width, tela1.Height), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);

//           // spriteBatch.Draw(tela2, posicaoRolagem - new Vector2(posicaosave.X, posicaosave.Y), new Rectangle(0, 0, tela2.Bounds.Width, tela1.Bounds.Height), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
            
//        }

        
//    }
//}

//fundo1.posicao.X -= fundo1.velocidade;
//            fundo2.posicao.X -= fundo2.velocidade;

//            if (fundo1.posicao.X < -fundo1.textura.Width)
//            {
//                fundo1.posicao.X = fundo2.posicao.X + fundo2.textura.Width;
//            }
//            else if (fundo2.posicao.X < -fundo2.textura.Width)
//            {
//                fundo2.posicao.X = fundo1.posicao.X + fundo1.textura.Width;
//            }

//            fundo1.velocidade += 0.01f;
//            fundo2.velocidade += 0.01f